/**
 * 通关管理、整合申报、一日游的报关单通用mixins
 */
export default {
    computed: {
        // 判断进出 口/境
        isBorder () {
            return /J$/.test(this.form.businessType)
        },
        // 判断 进/出
        isImport () {
            return /^J/.test(this.form.businessType)
        }
    },
    methods: {
        // 关闭当前页面标签
        removeTagNav () {
            let list = this.$store.state.app.tagNavList
            const index = list.findIndex(
                item => item.fullPath === this.$route.fullPath
            )
            if (index > -1) {
                list.splice(index, 1)
            }
        },
        // 校验表单的某个字段
        validateField (refName, key, cb) {
            const ref = this.$refs[refName]
            ref && ref.validateField && ref.validateField(key, cb)
        },
        // 重置某个表单
        resetForm (refName) {
            const ref = this.$refs[refName]
            ref && ref.resetForm && ref.resetForm()
        },
        setFormTips (refName, key, value) {
            const ref = this.$refs[refName]
            ref && ref.setFormTips && ref.setFormTips(key, value)
        },
        getFormTips (refName, key) {
            const ref = this.$refs[refName]
            if (ref && ref.getFormTips) {
                return ref.getFormTips(key)
            }
            return key ? '' : null
        },
        // 清空某个表单校验信息
        clearFormTips (refName, keys = []) {
            const ref = this.$refs[refName]
            ref && ref.clearFormTips && ref.clearFormTips(keys)
        },
        // 设置某个表单数据
        setFormData (refName, ...args) {
            const ref = this.$refs[refName]
            ref && ref.setFormData && ref.setFormData(...args)
        },
        // 获取表单数据
        getFormByKey (refName, key) {
            const ref = this.$refs[refName]
            return ref && ref.getFormByKey ? ref.getFormByKey(key) : undefined
        },
        // focus 表单某个元素  name  对应 表单元素的name
        setAssignFocus (refName, name) {
            const ref = this.$refs[refName]
            ref && ref.focusElement(name)
        },
        // 格式化特殊业务标识
        getSpecDeclName: specDeclFlag => {
            let specBusinessList = [
                '国际赛事',
                '特殊进出军工物资',
                '国际援助物资',
                '国际会议',
                '直通放行',
                '外交礼遇',
                '转关'
            ]
            if (specDeclFlag) {
                return specDeclFlag
                    .split('')
                    .map(
                        (item, index) =>
                            (item === '1' && specBusinessList[index]) || ''
                    )
                    .filter(item => !!item)
                    .join(',')
            }
            return ''
        }
    }
}
